package com.chainzouzou.Java_Programming_A;
import java.util.Scanner;
public class bct03 {
    /*方一*/
public static void main(String[] args) {
    Scanner sc=new Scanner(System.in);
    while (sc.hasNextLine()){
        String s=sc.nextLine();
        int a=Integer.parseInt(s);//将字符串参数转换为对应的int基本类型。
        if (a>=10000&&a<=20000){
            System.out.println(Integer.toString(a,2)+","+Integer.toString(a,8)+","+Integer.toString(a,16));
        }else{
            int sum=0;
            for (int i=0;i<s.length();i++){
               //public char charAt(int index):将当前字符串转换为char[]数组
                char c=s.charAt(i);
                if (c!='-'){
                    int b=c-'0';
                    /*字符‘0’对应的ASCII码是48，48对应的十六进制数就是0x30，通常我们在编程的时候，用字符转化为数字的时候经常要用到，
                    比如要将‘8’转换为数字8，在语句中这样写就可以了，“ 8+‘0’”。这里的8就是数字。
            字符‘0’和数字0的区别：
`            前者是字符常量，后者是整形常量，
            它们的含义和在计算机中的存储方式截然不同。但是字符常量可以像整数一样在程序中参与相关运算。*/
                    sum+=b;
                    System.out.print(c+" ");
                }
            }
            System.out.println(sum);
        }
    }
}
}

//方二
/*import java.util.Scanner;

    public class Main {
        public static void main(String[] args) {
            Scanner sc=new Scanner(System.in);
            while (sc.hasNextLine()){
                String s=sc.nextLine();
                if (s.equals(""))continue;
                int a=Integer.parseInt(s);
                if (a>=10000&&a<=20000){
                    System.out.println(Integer.toString(a,2)+","+Integer.toString(a,8)+","+Integer.toString(a,16));
                }else{
                    s=Integer.toString(Math.abs(a));
                    int sum=0;
                    for (int i=0;i<s.length();i++){
                        char c=s.charAt(i);
                        int b=c-'0';
                        sum+=b;
                        System.out.print(c+" ");
                    }
                    System.out.println(sum);
                }
            }
        }
    }
}*/

